package DuoTai;

/**
 * 多态：
 1.本质是子类和父类对象之间的互相转换
 2.通过对象的向上转型可以实现接收参数的统一，向下转型可以扩充方法的调用
 3.两个没有关系的关系对象是不能进行转型，会发生classcastException
 方法的多态性
 方法的重载：同一个方法名称可以根据参数的类型及个数调用不同的方法体
 方法的覆写：同一个父类的方法可能根据实例化的子类不同也有不同的实现
 对象的多态性（前提：方法覆写）：
 【自动，90%】对象的向上转型：父类 父类对象=子类实例   如int+long=long
 【强制，1%】对象的向下转型：子类 子类对象=（子类）父类实例
 ps向下转型时必须要先进行向上转型，否则会报ClassCastException
 */
class Person{
    public void takeoff(){
        System.out.println("脱掉");
    }
}
class Student extends Person{
    public void takeoff(){
        System.out.println("一件一件脱");
    }
}
class Worker extends Person{
    public void takeoff(){
        System.out.println("全部脱");
    }
}
public class duo_tai {
    public static void main(String[] args){
        in(new Student());
        in(new Worker());
    }

    public static void in(Person person){
        person.takeoff();
    }

}
